package cn.btks.resultintegration.catalog.service;

import cn.btks.commonserver.result.ResultState;
import cn.btks.resultintegration.catalog.dto.CatalogDto;
import cn.btks.resultintegration.catalog.pojo.Catalog;

import java.util.List;

/**
 * @Author lijun
 * @Date 2020/12/14 17:17
 */
public interface CatalogService {

    /**
     * 查询所有目录
     * @return
     */
    List<CatalogDto> findAll();

    /**
     * 查询所有目录
     * @return
     */
    List<Catalog> findAll1();

    /**
     * 根据ID查询目录
     * @param id
     * @return
     */
    Catalog findById(Long id);

    /**
     * 根据编码code查询目录
     * @param code
     * @return
     */
    Catalog findByCode(String code);

    /**
     * 根据keycode查询目录
     * @param keyCode
     * @return
     */
    Catalog findByKeyCode(String keyCode);

    /**
     * 根据keycode查询目录
     * @param keyCode
     * @return
     */
    Catalog findLikeKeyCode(String keyCode);

    /**
     * 根据上级目录ID查询目录
     * @param upLevelId
     * @return
     */
    List<Catalog> findAllByUpLevelId(Long upLevelId);

    /**
     * 根据目录ID查询其下所有子目录的ID
     * @param id
     * @return
     */
    List<Long> findAllCatalogIdById(Long id);

    /**
     * 保存目录
     * @param catalog
     * @return
     */
    ResultState save(Catalog catalog);

    /**
     * 批量保存目录
     * @param catalogList
     * @return
     */
    ResultState saveAll(List<Catalog> catalogList);

    /**
     * 更新目录
     * @param catalog
     * @return
     */
    ResultState update(Catalog catalog);

    /**
     * 批量更新目录
     * @param catalogList
     * @return
     */
    ResultState updateAll(List<Catalog> catalogList);

    /**
     * 根据ID删除目录
     * @param id
     * @return
     */
    ResultState delete(Long id);
}
